springboot内嵌tomcat优化 您所在的位置:网站首页 springboot 集成tomcat springboot内嵌tomcat优化

springboot内嵌tomcat优化

#springboot内嵌tomcat优化| 来源: 网络整理| 查看: 265

可以在外挂的配置文件application.properties中优化tomcat配置

 

在spring-configuration-metadata.json文件中相关tomcat配置

server.tomcat.accept-count:等待队列长度,默认100

server.tomcat.max-connections:最大可连接数,默认10000

server.tomcat.max-threads:最大工作线程数,默认200

server.tomcat.min-spare-threads:最小工作线程数,默认10

server.tomcat.accesslog.enabled=true  开启access日志

server.tomcat.accesslog.directory=/var/www//tomcat  日志存放的路径

server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D  日志格式为:请求的host主机地址,时间,方式,路径,协议,状态,返回字节数,处理时间

注意:默认配置下,连接数超过10000后出现拒接连接情况;触发的请求超过200+100后拒绝处理

 

定制内嵌tomcat开发 相关参数:

keepAliveTimeOut:多少毫秒后不响应的断开keepalive

maxKeepAliveRequests:多少次请求后keepalive断开失效

 

keepAlive简介:参考这里 

优点: Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。,长连接能够保证服务器和客户端的socket能够高效利用,减少握手等额外的开销。

缺点:但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连 接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep-Alive功能对资源利用的影响尤其突出。 

 

内嵌tomcat设置方法:

实现   WebServerFactoryCustomizer

 具体如下:

1 import org.apache.catalina.connector.Connector; 2 import org.apache.coyote.http11.Http11NioProtocol; 3 import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; 4 import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; 5 import org.springframework.boot.web.server.ConfigurableWebServerFactory; 6 import org.springframework.boot.web.server.WebServerFactoryCustomizer; 7 import org.springframework.stereotype.Component; 8 9 //当Spring容器中没有TomcatEmbeddedServletContainerFactory这个bean时,会把此bean加载进容器 10 @Component 11 public class WebServerConfiguration implements WebServerFactoryCustomizer { 12 13 @Override 14 public void customize(ConfigurableWebServerFactory factory) { 15 //使用工厂类定制tomcat connector 16 ((TomcatServletWebServerFactory)factory).addConnectorCustomizers(new TomcatConnectorCustomizer() { 17 @Override 18 public void customize(Connector connector) { 19 Http11NioProtocol protocol= (Http11NioProtocol) connector.getProtocolHandler(); 20 //设置30秒无响应则断开keepalive 21 protocol.setKeepAliveTimeout(30000); 22 //设置最大10000次请求后则断开keepalive 23 protocol.setMaxKeepAliveRequests(10000); 24 } 25 }); 26 } 27 }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有